From 47421a278a6a2597188fe77cfc8beee47f773867 Mon Sep 17 00:00:00 2001 From: "cl349@firebug.cl.cam.ac.uk" Date: Fri, 17 Feb 2006 11:49:11 +0000 Subject: [PATCH] Fix Read/Write CR3 emulation. - on write, new_guest_cr3() takes an mfn not an ma - for shadow_translate guests, apply mfn_to_gmfn/gmfn_to_mfn Signed-off-by: Christian Limpach --- xen/arch/x86/traps.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 3a1deb8535..a9a0ff10b2 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -901,7 +901,8 @@ static int emulate_privileged_op(struct cpu_user_regs *regs) break; case 3: /* Read CR3 */ - *reg = pagetable_get_paddr(v->arch.guest_table); + *reg = pfn_to_paddr(mfn_to_gmfn(v->domain, + pagetable_get_pfn(v->arch.guest_table))); break; case 4: /* Read CR4 */ @@ -950,7 +951,7 @@ static int emulate_privileged_op(struct cpu_user_regs *regs) case 3: /* Write CR3 */ LOCK_BIGLOCK(v->domain); - (void)new_guest_cr3(*reg); + (void)new_guest_cr3(gmfn_to_mfn(v->domain, paddr_to_pfn(*reg))); UNLOCK_BIGLOCK(v->domain); break; -- 2.30.2